package com.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data;
import org.springframework.stereotype.Component;

@JsonInclude(JsonInclude.Include.NON_NULL)
@Component
@Data
public class JsonResult {

    private Integer code;
    private String message;
    private Object data;

    /**
     * 后端服务器运行未出错，不需要携带数据的情况下，返回正确的JsonResult
     * @param code 正确情况下的状态码
     * @return JsonResult对象
     */
    public static JsonResult buildSuccess(Integer code) {
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(code);
        return jsonResult;
    }


	/**
     * 后端服务器运行未出错，需要携带数据的情况下，返回正确的JsonResult
     * @param code 正确情况下的状态码
     * @param data 需要携带的数据
     * @return JsonResult对象
     */
    public static JsonResult buildSuccess(Integer code, Object data) {
        JsonResult jsonResult = JsonResult.buildSuccess(code);
        jsonResult.setData(data);
        return jsonResult;
    }

    /**
     * 后端服务器未能正确执行完程序，需要携带错误信息，返回出现错误状态的JsonResult
     * @param code  错误情况下的状态码
     * @param error 错误信息
     * @return JsonResult对象
     */
    public static JsonResult buildFailure(Integer code, String error) {
        JsonResult jsonResult = new JsonResult();
        jsonResult.setCode(code);
        jsonResult.setMessage(error);
        return jsonResult;
    }
}
